or shortie pinkie Wi. i came across this keyboard design some time ago which had a distinctively heavier pinkie finger stagger than is commonly found.
But as radical as the column stagger appears, i had noticed when typing with the keyboard on my lap tray—something i do a lot of these Covid days, no longer confining myself to my office desk and keyboard tray—that my pinkie fingers, palms down at rest on my lap, naturally position themselves on the bottom row giving some credence to the stagger of the design.
hence, this variant of BEAKL Wi which swaps the X and V keys..
with dark green representing the at rest home positions.
It is a subtle change but does place the higher frequency V in the pinkie’s relaxed position when one is not maintaining proper home row touch typing form. We are not talking about a radical improvement in fingering metrics (even with adjusted finger weightings for this approach) but it can be an improved tuning of the keyboard for the proper set of hands.
The pinkie modifier remains on the home row for modifier chording.
this layout requires the ring finger cheat in place of the normal pinkie finger reach to the top row corner—for the Z and Colon keys—to otherwise avoid a double row pinkie reach. YMMV with this ring finger reach but i had already adopted this technique a long time ago to eliminate the top row pinkie reach which, for my hands, required shifting the whole hand and wrist position upwards from the palm down position—this is much less severe with proper touch typing form but still perceptibly present for this set of hands.
The pinkie finger reach is limited to the home row (from the bottom row)—the home row reach in this instance being much less severe than the corresponding reach to the top row, accounting for the improved feeling of the layout.
The caveat here for the adventurous is the potential for instilling sloppy touch typing technique—not to mention the fingering cheat required (but hey! we’re already doing the CT WA index middle finger cheat aren’t we?). It is a subtle refinement of the layout if the fingering adjustments come naturally for one’s particular set of hands—i must have the aforementioned shorter pinkie fingers (having wished the Corne pinkie columns had a half key greater stagger).
certainly, the more frequent V (than X) words flow more fluidly—not to mention the inherited finger memory for the key from BEAKL Zi. It provides a more relaxed hand positioning while typing on the lap and, given i am seldom at my desk anymore, is quite likely to become my daily driver.
This layout is not for everyone. Stock BEAKL Wi is still recommended for anyone contemplating even venturing this far. This variant really moves the realm of keyboard layout design to that of hand tuned—it is not a one size fits all solution.
Nor does this pinkie stagger apply to all keyboards. The Chimera Ergo 42’s pinkie stagger is slightly greater than the Corne’s and does not benefit from the swap, at least for me—those with even shorter pinkies might. While i have not been using my Plancks for quite some time since migrating to split keyboards, i suspect ortholinear keyboard users may find this pinkie finger stagger even more applicable.
YMMV when exploring possibilities beyond mere fingering metrics. Speaking of which..
for fun, the layout was evaluated with changes to the configuration file, swapping the pinkie home row and bottom row effort weights..
[weights]
16.0 12.0 2.0 1.0 1.0 4.0 4.0 1.0 1.0 2.0 12.0 16.0
10.0 7.0 1.0 0.5 0.5 1.5 1.5 0.5 0.5 1.0 7.0 10.0
9.0 5.0 2.5 2.0 1.5 5.0 5.0 1.5 2.0 2.5 5.0 9.0 // rest pinkie on lower row of corne!
0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5
and correspondingly mapping the thumb to pinkie row penalties..
[penalties]
,same_row,row_jump1,row_jump2,row_jump3
ii, 2.5, 3.5, 4.5, 0.0 // same finger
im, 0.5, 1.0, 2.0, 0.0
ir, 0.5, 1.0, 1.5, 0.0
ip, 0.5, 1.0, 1.5, 0.0
mi, -1.5, -0.5, 1.5, 0.0 // inward roll
mm, 2.5, 3.5, 4.5, 0.0 // same finger
mr, 0.5, 1.0, 2.0, 0.0
mp, 1.0, 1.5, 2.5, 0.0
ri, -1.5, -0.5, 1.5, 0.0 // inward roll
rm, 1.0, 1.5, 2.5, 0.0 // inward roll
rr, 3.0, 4.0, 5.0, 0.0 // same finger
rp, 3.0, 4.5, 7.0, 0.0
pi, -1.0, 0.0, 1.0, 0.0 // inward roll
pm, 1.0, 2.0, 3.0, 0.0 // inward roll
pr, 4.0, 5.0, 6.5, 0.0 // inward roll
pp, 5.0, 6.0, 8.0, 0.0 // same finger
it, 0.5, 1.5, 0.5, 1.0
ti, 0.5, 1.5, 0.5, 1.0
mt, 0.5, 1.5, 0.5, 1.0
tm, 0.5, 1.5, 0.5, 1.0
rt, 0.5, 1.5, 0.5, 1.0
tr, 0.5, 1.5, 0.5, 1.0
pt, 0.5, 0.5, 1.0, 1.5 // lazy pinkie position
tp, 0.5, 0.5, 1.0, 1.5 // lazy pinkie position
tt, 2.0, 3.0, 2.0, 2.5 // same finger
yielding the following comparison..
en | fr | es | de | |
---|---|---|---|---|
BEAKL Wi-v | 42.88 | 42.65 | 43.30 | 47.78 |
BEAKL Wi | 43.48 | 43.16 | 43.83 | 48.31 |
BEAKL Zi | 46.14 | 42.97 | 43.77 | 50.56 |
BEAKL 15 | 53.28 | 65.48 | 50.63 | 56.37 |
BEAKL 19bis | 61.38 | 56.98 | 51.95 | 61.90 |
BEAKL 19 | 62.34 | 71.58 | 53.35 | 55.19 |
qgmlwyfub | 63.51 | 72.46 | 57.49 | 63.94 |
Carpalx | 63.78 | 73.33 | 58.19 | 66.32 |
BEAKL 19 Opt French | 65.23 | 49.74 | 47.11 | 64.43 |
Neo | 66.75 | 82.22 | 69.06 | 64.53 |
Minimak-8key | 73.52 | 87.29 | 88.37 | 66.98 |
Hands down | 75.36 | 92.81 | 89.35 | 71.75 |
Norman | 75.97 | 80.81 | 82.37 | 70.63 |
Kaehi | 76.03 | 90.77 | 73.33 | 82.47 |
Colemak DHm mod | 77.06 | 84.56 | 90.14 | 63.68 |
Colemak DHm | 77.08 | 83.08 | 90.14 | 63.68 |
MTGAP “shortcuts” | 77.49 | 84.64 | 71.29 | 79.61 |
Colemak | 77.80 | 82.98 | 90.39 | 65.89 |
MTGAP “ergonomic” | 77.93 | 80.58 | 75.20 | 69.82 |
Soul mod | 78.49 | 85.98 | 91.68 | 61.78 |
Workman | 79.18 | 92.96 | 93.24 | 76.43 |
ASSET | 79.19 | 88.90 | 89.64 | 78.91 |
Colemak DH | 79.59 | 86.57 | 93.71 | 65.46 |
Notarize | 79.98 | 91.63 | 92.75 | 76.46 |
Oneproduct | 80.15 | 87.39 | 73.82 | 82.60 |
MTGAP “standard” | 80.85 | 82.97 | 78.14 | 71.14 |
Niro mod | 81.25 | 88.67 | 96.53 | 67.11 |
Three | 81.34 | 90.69 | 85.19 | 73.81 |
MTGAP 2.0 | 81.59 | 84.80 | 76.88 | 65.21 |
MTGAP | 83.56 | 86.47 | 75.27 | 85.17 |
MTGAP “Easy” | 85.00 | 97.55 | 97.53 | 75.00 |
White | 85.81 | 96.61 | 92.77 | 79.17 |
Qwpr | 92.02 | 108.21 | 106.71 | 97.50 |
Dvorak | 93.18 | 111.72 | 109.46 | 89.37 |
Coeur | 95.53 | 88.02 | 90.06 | 102.12 |
Bépo 40% | 97.08 | 87.45 | 97.08 | 108.85 |
Bépo keyberon | 97.48 | 87.38 | 97.10 | 108.90 |
Qwerty | 100.00 | 111.69 | 108.30 | 92.83 |
Qwertz | 101.07 | 111.11 | 111.06 | 91.55 |
Azerty | 121.52 | 129.24 | 136.43 | 109.07 |
BEAKL Wi-v edges out BEAKL Wi as expected with the BEAKL and Carpalx layouts retaining their preferential rankings applying the revised BEAKL weightings and penalties. The actual scores themselves improved with the J—being more frequent than the Q—now being treated as the home position for the pinkie along with the V.
The remaining layouts score differently with changes to their rankings in many instances—not surprisingly, as evaluation with a bottom row pinkie home position is contrary to conventional keyboard home row placement.
It’s early in the assessment but the layout feels good—not a radical improvement. But i don’t expect to make any more changes soon (famous last words). Perhaps making the X V keys software swappable** is in order to have the best of both worlds for varying typing situations.. :-)
**Done! during the ongoing Covid lock down..
Note: the Flash or reset key has been moved to the Mouse Layer from the Edit / Cursor Navigation Layer.
Additional keycodes—to the pinkie home row modifier—for the bottom and home row pinkie keys are defined for the base and togglable layers in place of the actual keycodes for X and V..
enum keyboard_keycodes {
BASE = SAFE_RANGE
...
,SWAPKEY // toggle pinkie home row stagger
,HOME2 // pseudo GUI_T(KC_X/V)
,HOME1 // KC_X/V
,SHIFT2 // SFT(KC_X/V)
,SHIFT1 // SFT(KC_X/V)
,KEY2 // KC_X/V
,KEY1 // KC_X/V
...
For a given row—bottom 1, home 2—the current stagger state determines its key value for the keycodes above..
static bool stagger = STAGGER; // initial config.h value
#define PINKEY(r) r == 2 ? (stagger ? KC_X : KC_V) : (stagger ? KC_V : KC_X)
bool process_record_user(uint16_t keycode, keyrecord_t *record)
{
switch (keycode) {
...
case HOME2:
mod_roll(record, RIGHT, KC_RGUI, PINKEY(2), 9); break;
case HOME1:
mod_roll(record, RIGHT, 0, PINKEY(1), 9); return false;
case SHIFT2:
send(record, SHIFT, PINKEY(2)); break;
case SHIFT1:
send(record, SHIFT, PINKEY(1)); break;
case KEY2:
send(record, NOSHIFT, PINKEY(2)); break;
case KEY1:
send(record, NOSHIFT, PINKEY(1)); break;
...
whose state is toggled from the Mouse Loyer..
case SWAPKEY:
if (KEY_DOWN) { stagger = !stagger; } break;
...
As much as anything, this togglable layout allows one’s particular posture at the moment to dictate the most optimal layout. Optimal in this case being comfort, as the letter frequencies involved are ultimately not that significant.. a sort of luxury setting :-)
after a couple of weeks of usage which included changes to the Corne QMK library—function parameter list contractions and subsequent simplification of the keymap source—i ended up swapping the bottom row of R2 SA Profile keycaps with flat R3 spherical sculptured keycaps yielding a top row to thumb R2-R3-R3-R1 profile.
It is a subtle refinement but the bottom row flats now seat better with the palm down lowered finger positioning—especially with the pinkies. Little details, all contributing to that elusive sought after “feel”..